package util

type R struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
	Data any    `json:"data"`
}

type R0 struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
	Data any    `json:"data"`
}

func (r *R) Error() string {
	return r.Msg
}

func Success(data any) *R {
	return &R{
		Code: 200,
		Msg:  "success",
		Data: data,
	}
}

func Fail(msg string) *R {
	return &R{
		Code: 500,
		Msg:  msg,
		Data: nil,
	}
}

func FailC(code int, msg string) *R {
	return &R{
		Code: code,
		Msg:  msg,
		Data: nil,
	}
}

func Error(err error) *R {
	return &R{
		Code: 500,
		Msg:  err.Error(),
		Data: nil,
	}
}

func ErrorC(code int, err error) *R {
	return &R{
		Code: code,
		Msg:  err.Error(),
		Data: nil,
	}
}
